package com.hui.service;

import com.baomidou.mybatisplus.extension.service.IService;
import com.hui.entity.dao.StoreCart;
import com.hui.util.ResponseResult;

import java.util.List;

/**
 * 购物车表(StoreCart)表服务接口
 *
 * @author hui
 * @since 2022-07-19 12:01:17
 */
public interface StoreCartService extends IService<StoreCart> {
    /**
     * 添加购物车
     *
     * @param uid               用户id
     * @param productId         商品id
     * @param cartNum           购物车数量
     * @param productAttrUnique 产品规格唯一的ID
     * @param isNew             是否新购买
     * @param combinationId     产品拼团ID
     * @param seckillId         产品秒杀ID
     * @param bargainId         产品砍价ID
     * @return
     */
    long addCart(Long uid, Long productId, Integer cartNum, String productAttrUnique, Integer isNew, Long combinationId, Long seckillId, Long bargainId);

    /**
     * 判断商品是否上架，库存是否充足
     *
     * @param uid               用户id
     * @param productId         商品id
     * @param cartNum           购物车数量
     * @param productAttrUnique 产品规格唯一的ID
     * @param combinationId     产品拼团ID
     * @param seckillId         产品秒杀ID
     * @param bargainId         产品砍价ID
     */
    void checkProductStock(Long uid, Long productId, Integer cartNum, String productAttrUnique, Long combinationId, Long seckillId, Long bargainId);

    /**
     * 获取购物车列表
     *
     * @param uid     用户ID
     * @param cartIds 购物车单个商品的IDl
     * @param status  是否新品
     * @return
     */
    ResponseResult getUserProductCartList(Long uid, List cartIds, Integer status);

    /**
     * 修改购物车产品数量
     *
     * @param cartId  购物车ID
     * @param cartNum 商品数量
     * @param uid     用户ID
     * @return
     */
    ResponseResult changeUserCartNum(Long cartId, Integer cartNum, Long uid);

    /**
     * 删除 购物车产品
     *
     * @param uid
     * @param ids
     */
    void removeUserCart(Long uid, List<String> ids);
}

